// 导入数据库操作模块
const { result } = require('joi/lib/base')
const db = require('../db/index')

// 获取文章分类处理函数
exports.getArticleCates = (req,res)=>{
  // 定义 SQL 语句
  let sql = 'select * from ev_article_cate where is_delete=0 order by id asc'
  // 执行SQL语句
  db.query(sql,(err,results)=>{
    // 执行 SQL 语句失败
    if(err) return res.cc(err)
    // 执行 SQL 语句成功
    res.send({
      status:0,
      message: '获取文章分类列表成功！',
      data:results
    })
  })
}

// 新增文章分类处理函数
exports.addArticleCates = (req,res)=>{
  // 定义查询 分类名称 与 分类别名 是否被占用
  let sql = 'select * from ev_article_cate where name=? or alias=?'
  // 执行 SQL 语句
  db.query(sql,[req.body.name,req.body.alias],(err,results)=>{
    // 执行 SQL 语句失败
    if(err) return res.cc(err)
    // 执行 SQL 语句成功，
    // 分类名 或 分类别名被占用
    if(results.length===2) return res.cc('分类名称与分类别名被占用！')
    if(results.length===1 && req.body.name === results[0].name && req.body.alias ===results[0].alias) return res.cc('分类名称与分类别名被占用！')
    // 分类名称 或 分类别名被占用
    if(results.length===1 && req.body.name === results[0].name) return res.cc('分类名称被占用！')
    if(results.length===1 && req.body.alias === results[0].alias) return res.cc('分类别名被占用！')
    // 定义新增文章分类的 SQL 语句
    sql = 'insert into ev_article_cate set ?'
    // 执行 SQL 语句
    db.query(sql,req.body,(err,results)=>{
      // 执行 SQL 语句失败
      if(err) return res.cc(err)
      // 执行 SQL 语句成功，但是影响函数不等于1
      if(results.affectedRows!==1) return res.cc('新增文章分类失败！')
      // 新增文章分类成功
      res.cc('新增文章分类成功！',0)
    })
  })
}

// 删除文章分类处理函数
exports.deleteCateById = (req,res)=>{
  // 定义删除文章分类的 SQL 语句
  let sql = 'update ev_article_cate set is_delete = 1 where id =?'
  // 执行 SQL 语句
  db.query(sql,req.params.id,(err,results)=>{
    // 执行 SQL 语句 失败
    if(err) return res.cc(err)
    // 执行 SQL 语句成功，但是影响函数不为1
    if(results.affectedRows!==1) return res.cc('删除文章分类失败！')
    // 删除文章分类成功
    res.cc('删除文章分类成功！',0)
  })
}

// 根据 id 获取文章分类处理函数
exports.getArtCateById = (req,res)=>{
  // 定义根据id获取文章分类的 SQL 语句
  let sql = 'select * from ev_article_cate where id = ?'
  // 执行 SQL 语句
  db.query(sql,req.params.id,(err,results)=>{
    // 执行 SQL 语句失败
    if(err) return res.cc(err)
    // 执行 SQL 语句成功，但是没有查询到任何数据
    if(results.length !== 1) return res.cc('获取文章分类数据失败')
    // 把数据响应给客户端
    res.send({
      status:0,
      message: '获取文章分类数据成功',
      data: results[0]
    })
  })
}

// 根据 id 更新文章分类处理函数
exports.updateCateById = (req,res)=>{
  // 定义查询 分类名称 与 分类别名 是否被占用
  let sql = 'select * from ev_article_cate where id<>? and (name=? or alias=?)'
  // 执行 SQL 语句
  db.query(sql,[req.body.id,req.body.name,req.body.alias],(err,results)=>{
    // SQL 语句执行失败
    if(err) return res.cc(err)
    // 执行语句成功
    if(results.length===2) return res.cc('分类名称与分类别名被占用！')
    if(results.length===1 && req.body.name === results[0].name && req.body.alias ===results[0].alias) return res.cc('分类名称与分类别名被占用！')
    // 分类名称 或 分类别名被占用
    if(results.length===1 && req.body.name === results[0].name) return res.cc('分类名称被占用！')
    if(results.length===1 && req.body.alias === results[0].alias) return res.cc('分类别名被占用！')
    // 定义更新文章分类 SQL 语句
    sql = 'update ev_article_cate set ? where id=?'
    // 执行 SQL 语句
    db.query(sql,[req.body,req.body.id],(err,results)=>{
      // 执行语句失败
      if(err) return res.cc(err)
      // 执行语句成功，但是影响函数不为1
      if(results.affectedRows!==1) return res.cc('更新文章分类失败！')
      res.cc('更新文章分类成功！',0)
    })
  })
}